package com.itheima.demo3;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/*
1、请从**系统菜单.txt**中读取这些菜单信息，将这些菜单信息在控制台展示成图1的样子（必须确保展示的顺序是正确的）
2、将正确的菜单顺序，写出到一个新文件**"系统菜单2.txt"**中保存起来，详细格式如下，懒得复制了
 */
public class Test3 {
    public static void main(String[] args) {
        try (
                //把流放到这里更好（忘记了具体的好处）
                // 1、使用字符缓冲输出流BufferedReader读取文件中的全部数据。
                BufferedReader br = new BufferedReader(new FileReader("Day14JavasePro-HuangPuBan-Test\\src\\系统菜单.txt"));
                // 5、写出菜单到新文件中去，按照行写用打印流很方便
                PrintStream ps = new PrintStream("Day14JavasePro-HuangPuBan-Test\\src\\系统菜单2.txt");
                ){

            // 2、按照行读取读菜单，所以要准备一个集合，然后存入集合中去
            List<String> menus = new ArrayList<>();
            //不用初始化，循环的第一轮会对它进行初始化
            String line;
            while ((line = br.readLine()) != null) {
                menus.add(line);
            }

            System.out.println("--------------输出看看集合里的信息-------------");
            System.out.println(menus);

            // 3、对菜单进行排序。
            //怎么对菜单txt文件读取的数据进行排序呢：集合的事情一用到stream流就简单多了，可以用：
            //public static <T> void sort(List<T> list) 对List集合中的元素进行升序排序   Collections是一个用来操作集合的工具类
            Collections.sort(menus);
            System.out.println("--------------看看排序后的集合信息-----------------");
            System.out.println(menus);

            // 4、遍历集合
            for (String menu : menus) {
                //每一行都是用 - 隔开的，所以建个数组存
                String[] menuNumAndName = menu.split("-");
                System.out.println(menuNumAndName[0].length() == 4 ?
                        menuNumAndName[1] :  "\t" + menuNumAndName[1]);
            }

            // 5、写出菜单到新文件中去，按照行写用打印流很方便
            for (String menu : menus) {
                ps.println(menu);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
